
public class Test {
    public static void main(String[] args) {
        Outer o = new Outer();
        o.foo(100);
    }
}
// 局部类（local class）
// 定义在 代码块（方法、构造器、静态初始化块、甚至 if 语句） 内部。
// 作用域仅限该块；不能有访问修饰符（public/private…）。
// 与成员内部类一样，持有外部类实例引用（除非定义在 static 上下文中）。

class Outer {
    private int z = 30;

    // 译器强制要求 任何被局部类（或匿名类）捕获的 局部变量 必须用 final 修饰
    public void foo(final int param) {
        int localVar = 42;
        /* 写在方法里的类 */
        class Local {
            void print() {
                System.out.println(z); // 外部实例域
                System.out.println(param); // 必须是事实 final
                System.out.println(localVar); // 同上
            }
        }
        new Local().print();
    }
}